import vnode from "../mysnabbdom/vnode"
/**
 * vnode接收sel, data, children, text, elm
 */
/**
 * h 函数接收的形式
 * h("div",{},"hello")
 * h("div",{},[
 *  h("span",{},"123456")
 * ])
 * h("div",{},h())
 */
export default function(sel,data,c){
  // 检查参数个数
  if(arguments.length !== 3){
    throw new Error("该函数只支持三个参数 sel , data , c")
  }
  // 检查参数C的类型
  if(["string","number"].includes(typeof c)){
    // 说明现在现在调用h函数是形态1
    return vnode(sel,data,undefined,c,undefined)
  } else if(Array.isArray(c)){
    // 说明出现的是形态2
    let children = []
    // 遍历数组,收集数组的节点
    c.forEach((item,index)=>{
      if(typeof item === "object" && item.hasOwnProperty('sel')){
        children[index] = item
      }else{
        throw new Error("传入的数组参数不是H函数")
      }
    })
    return vnode(sel,data,children,undefined,undefined)
  } else if(typeof c === "object" && c.hasOwnProperty('sel')){
    let children = [c]
    return vnode(sel,data,children,undefined,undefined)
  }
}